1. The present invention is a set of computational tools that facilitate the integration of multifunction computer systems and multiple computer languages. The present invention significantly decreases the programming efforts necessary to integrate conventionally incompatible systems. The invention is a meta-interpreter that makes it possible to automatically produce and understand programs and command messages. The present invention also allows the user to manipulate non-compatible programming languages. Once interpreters for different machines and human languages have been constructed, they can be linked together into a system of interpreters. This complex system can be used to make intelligent decisions for system wide actions, planning and diagnostic recovery by parsing meaning from incoming messages, maintaining a global model of the states of the system and finally producing outgoing messages in the appropriate language to control the system.
More specifically, the present invention is directed to an interpreter capable of analyzing a message in any language, whether it is an artificial language or a natural human language, and produce some action based on the interpreted message. The action can be as simple as updating a table or as complex as translating the message into another language either natural or artificial. The interpreter also has the capability of making decisions based on multiple messages and implementing those decisions in the form of some action or producing a program to run a robot. The data structure of the invention allows the representation of all user programs and data in a table format which allows programs to be the object of traditional database operations.
2. Description of the Related Art
The expectations triggered by advanced robotic systems peaked with visions of increased productivity and quality. Much to everyone's disappointment, these expectations have still not been realized. It has turned out that advanced stand-alone machines were not enough to increase productivity, and integrating large systems has been prohibitively expensive. What is worse, the few projects that were undertaken took inordinate amounts of engineering time: 50 man years has not been the worst case. Most of this time has been spent by engineers trying to put round plugs into square sockets because some machines were not designed to allow any communication, while in others the feedback system did not allow for consistent results, and all were programmed using different languages or modifications of the same language that created incompatibility problems.
One attempt at solving the communication problem has been a multi-vendor initiative to standardize the communication protocols between computational components in the manufacturing environment called Manufacturing Automation Protocol (MAP). This is an effort to standardize the interconnection of equipment from the communication medium all the way up to a complex message passing scheme that would allow for file transfers and other application dependent tasks within a multi-vendor network. The MAP effort offers a standardized approach for transferring messages within a network of machines but does not provide any intelligent understanding of these messages.
An interpreter is one way of understanding messages. Computer language interpreters convert a message in the computer language into a form which can then be executed by the machine, however, such interpreters are specifically geared to the target machine and the source language.
FIG. 1A illustrates a prior art procedural approach to interpreting messages in computer languages such as Fortran and Basic. First, the message is divided into tokens based on a syntax, the tokens are compared to a dictionary containing the legal words of the system and then the tokens are output by the lexical analysis stage 2 to a parsing stage 4. The parsing stage 4 produces a parse tree which analyzes the message in terms of the system's grammar. An example of a parse tree 6 for the equation a=(b+c)*d is illustrated in FIG. 1B. The parse tree is then used by a semantic checking stage 8 which attaches meaning to the message. The next stage can be one of two types depending on the language being implemented. The message can be applied to a compiler 10 which produces executable code in the target machine language or the message can be applied to an interpreter 12 which essentially executes a subroutine call that immediately carries out the desired action, such as occurs in Basic.
Prior Art procedural languages and interpreters are designed for a single processor with a single memory resulting in a bottleneck impeding the flow of instructions because each instruction is expected to go through the processor in turn. Interpreters, for example, a Basic interpreter, deduce the state of the system from the content of previous messages, such that new messages can act on information provided by previous messages. Basic can only maintain status and build action plans by modifying data.
In contrast, a non-procedural language describes an algorithm in such a way as to make the order of program statements unimportant. A non-procedural interpreter should be able to direct flow of high level instructions as they are needed. A non-procedural interpreter, if supplied with artificial intelligence features, should be able to modify not only status and data but the programs themselves. An intelligent non-procedural interpreter, if given multiple language understanding capability, should be able to understand and generate programs and messages in any language desired.